package javaCode.chapter12.homework01;

/**
 * @author 徐州城
 * @version 1.0
 */
public class Homework01 {
    public static void main(String[] args) {

        /**
         * 1、将字符串指定的部分进行反转。比如将 "abcdef" 反转为 "aedcbf"
         * 2、编写方法 public static String reverse(String str, int start, int end) 搞定
         * 思路分析
         * (1) 先把方法定义确定
         * (2) 把 String 转成 char[]，因为 char[] 的元素是可以交换的
         */

        String str = null;
        try {
            str = reverse("abcdef", 0, 4);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return;
        }
        System.out.println(str);
    }

    public static String reverse(String str, int start, int end) {

        //对输入的参数进行验证
        //编程技巧
        //1. 写出正确的情况
        //2. 然后取反即可
        //3. 这样写，思路就不会乱
        if (!(str != null && start >= 0 && end < str.length() && end > start)) {
            throw new RuntimeException("参数不正确");
        }

        char[] chars = str.toCharArray();
        char temp = 0; //交换辅助变量
//        for (int i = 0; i < chars.length; i++, start++, end--) {
//            //如果开始索引大于或等于 结束索引 那么就可以不用再交换了
//            if (start > end || start == end)
//                break;
        for (int i = start, j = end; i < j; i++, j--) {
            temp = chars[i];
            chars[i] = chars[j];
            chars[j] = temp;
        }
        //使用chars重新构建一个String 返回即可
        return new String(chars);
    }
}
